﻿namespace DesignModeConsole.行为型.访问者模式;

/// <summary>
/// 资源文件  违反开闭原则，每次增加功能都要修改所有的类，业务逻辑都在一个类中
/// </summary>
public abstract class ResourceFile
{
    private readonly string _filePath;

    public ResourceFile(string filePath)
    {
        _filePath = filePath;
    }

    /// <summary>
    /// 提取文本
    /// </summary>
    public abstract void Extract2Txt();
}

public class PptFile : ResourceFile
{
    public PptFile(string filePath) : base(filePath)
    {
    }

    public override void Extract2Txt()
    {
        // 省略从ppt抽取文件的代码

        Console.WriteLine("extract ppt");
    }
}

public class PdfFile : ResourceFile
{
    public PdfFile(string filePath) : base(filePath)
    {
    }

    public override void Extract2Txt()
    {
        // 省略从pdf抽取文本的代码
        Console.WriteLine("extract pdf");
    }
}

public class WordFile : ResourceFile
{
    public WordFile(string filePath) : base(filePath)
    {
    }

    public override void Extract2Txt()
    {
        // 省略从word抽取文本的代码
        Console.WriteLine("extract word");
    }
}